Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 18.10.2014, 22:09
Новичок на форуме
Отправить личное сообщение для native Посмотреть профиль Найти все сообщения от native
 
Регистрация: 18.10.2014
Сообщений: 1

Отправка формы на сервер (только при помощи JS)
Здравствуйте, при создании сайта передо мной встала задача отправить форму с файлами на сервер без перезагрузки страницы. В качестве способа реализации я выбрал универсальный метод - сделать все руками.

Насколько я понял это возможно сделать:
1. открыв запрос, задав заголовок Content-Type: multipart/form-data; boundary='--сгенерировать произвольное значение',
2. составить тело запроса из заголовков:
- для полей текстового типа, чекбоксов, радио, селектов: Content-Disposition: form/data; name='field_name' \r\n\r\n field.value \r\n
- для полей ввода файлов: Content-Disposition: form/data; name='file_input_field_name'; filename='file_input_field.value' \r\n\r\n file_input_field.files[0] \r\n, каждый из которых отделяется сторокой: --boundary \r\n
3. отправить тело запроса методом send объекта XMLHttpRequest

В результате этого, у меня все текстовые параметры успешно принимаются на стороне сервера php скриптом, а вот фотографии нет.
При просмотре тела запроса в консоли браузера для отправки файла отображается:
--07302109822734737
Content-Disposition: form-data; name="user_foto"; filename="my.jpg"
[object File]

все ли здесь правильно? мне не совсем понятно каким образом объект File может содержать эту картинку. (на стороне сервера наличие файлов проверяется if(is_uploaded_file($_FILES['user_foto']['tmp_name'])) {} else {//error message}. в браузере выводится error_message)

Помогите пожалуйста в этом разобраться.
Ответить с цитированием
  #2 (permalink)  
Старый 18.10.2014, 22:31
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

request.send(new FormData(myForm))


+ полифил. Но в старых браузерах без File API не будет работать, решение - скрытый iframe, реализовано к примеру в jquery.form.js
__________________
В личку только с интересными предложениями
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Отправка на сервер при уходе со страницы. livelover Общие вопросы Javascript 0 14.09.2014 11:52
Привязать закрытие окна bootstrap при наатии только на определенную кнопку voron121 Библиотеки/Тулкиты/Фреймворки 0 15.08.2014 02:23
виджет, только сторона клиента (JS, JQUery, работа с датами, масштабирование) eugen35 Работа 4 31.07.2014 09:50
Как отменить событие onchange при отправке формы? Petja Элементы интерфейса 1 10.04.2014 18:10
Подскажите как при помощи JS hta в трею свернуть kimboo Общие вопросы Javascript 4 11.07.2008 16:00